package edu.zut.method;

import java.util.Arrays;

public class MethodDemo {

    public static void main(String[] args) {
//        method01();
        method02(10, 30);
        int result = method03();
        System.out.println(result);
        double avg = method04(60, 89, 78);
        System.out.println(avg);
        //静态方法中调用非静态   new  类名().方法名(实参....);   或者 对象名.方法名(实参....);
        MethodDemo md = new MethodDemo();
        md.add2(20,34,56);

    }

    /**
     * 权限修饰符(public)   [static] [final]  返回值类型  方法名(形参) [throws 异常名]{
     * 方法体;
     * [return 返回值;]
     * }
     * static :静态   由static修饰的方法属于类所有
     * 返回值类型： 调用方法后 是否给使用者数据
     * void  代表没有返回值   此时return可以省略
     * 基本数据类型、引用数据类型，此时要求return 后有对应类型的数据
     * 方法名： 命名规则   小驼峰
     * 形参 ：  只做声明，多个形参之间,分割   格式： 参数类型  参数名称
     * throws 异常名： 当前方法有可能抛出的异常
     * 方法体： 执行的方法代码
     * return 返回值  ：  可选项
     * <p>
     * 方法的调用：
     * 通过方法名称调用
     */
    /*1、定义一个静态的无返回值无参数的方法，在这个方法中实现1-100的输出*/
    public static void method01() {
        for (int i = 1; i < 101; i++) {
            System.out.println(i);
        }
    }

    /*定义一个静态的无返回值有参数（两个整型）的方法，在这个方法中将这两个整数互相交换*/
    public static void method02(int a, int b) {
        int temp = a;
        a = b;
        b = temp;
        System.out.println("a=" + a);
        System.out.println("b=" + b);
//        return;   void  不建议下return
    }

    /*定义一个静态的有返回值无参数的方法，计算1-100的和并将和返回*/
    public static int method03() {
        int sum = 0;
        for (int i = 1; i < 101; i++) {
            sum += i;
        }
        //有返回值的时候 必须return 对应类型的数据
        return sum;
    }

    /*定义一个静态的有返回值有参数（三个整数）的方法，计算这三个整数的平均数并返回*/
    public static double method04(int a, int b, int c) {
        double avg = (a + b + c) / 3.0;
//        return (a + b + c) /3.0;
        return avg;
    }

    /*定义一个非静态有返回值有参数的方法，表示计算两个整数之和*/
    public int add(int a, int b) {
        return a + b;
    }

    /*定义一个方法（非静态），计算三个整数之和并返回和*/
    public int add2(int a, int b, int c) {
//        return  a + b + c;
        return add(a, b) + c;
    }

}
